Открытая платформа для создания заботливой квартиры
Магазинные увлажнители обладают рядом минусов: а) дорогие, б) сложно устроены. Последнее особенно вредно влияет на здоровье, поскольку в полостях, трубках и других потаенных местах заводятся вредные бактерии, которыми мы потом дышим... Увлажнитель можно периодически промывать, однако, как убедиться в том, что все вредители были вымыты?
Правильный ответ: значительно упростить конструкцию. При этом мы получаем такие преимущества:
- вместо 3 000 руб. вы тратите 500 руб.
- поскольку это недорого, то увлажнителей можно поставить хоть по три штуки в каждую комнату.
- за ним не нужно ухаживать, и так все видно, где там и сколько плесени или грибов завелось - меняем эту часть и спим спокойно.
- конструкция индивидуальная - хочешь на стол ставь, хочешь на люстру (или карниз) вешай.
Итак, вам потребуются следующие компоненты:
Название | Назначение | Цена, руб. |
---|---|---|
BLE JDY-08 | Радиомодуль Bluetooth LE | 140 |
Arduino Pro Mini | Микроконтроллер для управления автоматизацией | 135 |
Ультразвуковой увлажнитель | 250 | |
DHT-22 | Датчик температуры и влажности | 200 |
G3MB-202P | Твердотельное реле | 60 |
Для питания испарителя потребуется минимум 12В (можно и больше). Для этих целей можно использовать отдельный блок питания, либо батарейку на 9В с повышающим преобразователем до 12В.
Программирование для HASS
О том как настроить Arduino IDE и подключить микроконтроллер к ПК читайте в этой коротенькой инструкции. Для компиляции программы необходимо загрузить библиотеки и добавить их в Arduino IDE через меню Sketch - Install library:
#include <jdy8.h>
#include <LowPower.h>
#include "DHT.h"
#define BLE_RX 8
#define BLE_TX 9
#define BLE_RESET 7
#define BLE_IO1 5
#define RELEY_PIN 4
#define DHT_DATA_PIN 6
long lastMilliseconds = 0;
float lastHumidity = 0;
void setup() {
JDY8 ble(BLE_RX, BLE_TX, BLE_RESET);
ble.configure("Humidifier-1");
attachInterrupt(digitalPinToInterrupt(BLE_IO1), waitForButton, CHANGE);
}
void loop()
{
if ( digitalRead(BLE_IO1) == HIGH ) {
pinMode(RELEY_PIN, OUTPUT);
digitalWrite(RELEY_PIN, HIGH);
JDY8 ble(BLE_RX, BLE_TX, BLE_RESET);
ble.setIOPin(1, 0, true);
digitalWrite(RELEY_PIN, LOW);
}
if ( millis() - lastMilliseconds > 60000 ) {
lastMilliseconds = millis();
DHT dht;
dht.setup(DHT_DATA_PIN, DHT::AM2302);
float humidity = dht.getHumidity();
if ( humidity != lastHumidity ) {
lastHumidity = humidity;
JDY8 ble(BLE_RX, BLE_TX, BLE_RESET);
ble.humidity(lastHumidity, true);
}
}
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
void waitForButton() {
}
Схема устройства
Вариант исполнения
Настройка HASS
Файл: /config/configuration.yaml
light:
- platform: cutecare
mac: <укажите тут адрес вашего BLE-модуля>
name: humidifier
type: jdy8
pin: 1
sensor:
- platform: cutecare
mac: <укажите тут адрес вашего BLE-модуля>
monitored_conditions:
- humidity
name: humidifier
Файл: /config/customize.yaml
sensor.humidifier:
friendly_name: Уровень влажности
light.humidifier:
friendly_name: Увлажнитель воздуха